#include<iostream>

using namespace std;
/* 双向链表有两个指针域 */
typedef struct DuLNode{
	int data;
	struct DuLNode *next;
	struct DuLNode *prior;
}DuLNode,*DuLinkList;
// 初始化
void InitDuLinkList(DuLinkList &L)
{
	L = (DuLinkList)malloc(sizeof(DuLNode));
	L->next = NULL;
	L->prior = NULL;
}
// 判空
bool isEmpty(DuLinkList &L)
{
	if(L->next == NULL){
		return true;
	}
	else
		return false;
} 

void Show(DuLinkList L)
{
	DuLinkList p = L->next;
	if(p == NULL){
		cout<<"空链表"<<endl;
	}
	while(p!=NULL){
		cout<<p->data<<endl;
		p = p->next;
	}
}
// 按位查找
DuLNode *GetElem(DuLinkList L,int i)
{
	DuLNode *p = L->next;
	int j = 1;
	while(p!=NULL&&j<i){
		L = L->next ;
		j++;
		
	}
	return p; 
}

void InsertDuLinkList(DuLinkList &L,int i,int e)
{
	DuLinkList s = (DuLinkList)malloc(sizeof(DuLNode));
	DuLinkList p = GetElem(L,i);
	s->data = e;
	s->next = p->next;
	if(p->next!=NULL){
		p->next->prior = s;
	}
	s->prior = p;
	p->next = s;
	
}


int main(){
	DuLNode *L = (DuLinkList)malloc(sizeof(DuLNode));
	InitDuLinkList(L);
//	Show(L);
	InsertDuLinkList(L,1,89);
	InsertDuLinkList(L,1,9);
	Show(L);
	
	return 0;
} 
